import DS from 'ember-data';
//application.js 可以为整个应用程序进行定制序列化
export default DS.JSONAPISerializer.extend({

  //前台传入的数据如下
  // {
  //     "data": {
  //       "id": "1",
  //       "type": "product",
  //       "attributes": {
  //         "name": "My Product",
  //         "amount": 100,
  //         "currency": "SEK"
  //       }
  //     }
  //   }


  //后台需要接收的数据格式如下
  // {
  //     "data": {
  //       "id": "1",
  //       "type": "product",
  //       "attributes": {
  //         "name": "My Product",
  //         "cost": {
  //           "amount": 100,
  //           "currency": "SEK"
  //         }
  //       }
  //     }
  //   }

  //我们要对数据格式进行转换使用下面得样例
  //使用serialize钩子实现数据的转化
  serialize(snapshot, options) {
    let json = this._super(...arguments);

    //新增一个cost节点，将数据写入const节点
    json.data.attributes.cost = {
      amount: json.data.attributes.amount,
      currency: json.data.attributes.currency
    };
    //删除原来数据的amount currency
    delete json.data.attributes.amount;
    delete json.data.attributes.currency;

    return json;
  },


  //后端传入的数据格式
  //   {
  //     "data": {
  //       "id": "1",
  //       "type": "product",
  //       "attributes": {
  //         "name": "My Product",
  //         "cost": {
  //           "amount": 100,
  //           "currency": "SEK"
  //         }
  //       }
  //     }
  //   }

  //前端需要的数据格式
  //   {
  //     "data": {
  //       "id": "1",
  //       "type": "product",
  //       "attributes": {
  //         "name": "My Product",
  //         "amount": 100,
  //         "currency": "SEK"
  //       }
  //     }
  //   }
  //我们可以调用normalizeResponse钩子进行数据处理
  normalizeResponse(store, primaryModelClass, payload, id, requestType) {
    //将数据位置进行移位
    payload.data.attributes.amount = payload.data.attributes.cost.amount;
    payload.data.attributes.currency = payload.data.attributes.cost.currency;
    //删除数据的cost节点
    delete payload.data.attributes.cost;

    return this._super(...arguments);
  }
});
